"""
BOM模块字典数据初始化Django管理命令
"""

from django.core.management.base import BaseCommand
from system.models import DictType, DictData


class Command(BaseCommand):
    help = '初始化BOM模块相关的字典数据'

    def handle(self, *args, **options):
        self.stdout.write('开始初始化BOM字典数据...')
        
        # BOM类型字典
        bom_type_dict, created = DictType.objects.get_or_create(
            value='bom_type',
            defaults={
                'name': 'BOM类型',
                'status': True,
                'remark': 'BOM类型字典，用于存储各种BOM类型'
            }
        )
        
        if created:
            self.stdout.write(self.style.SUCCESS(f'创建字典类型: {bom_type_dict.name}'))
        
        # BOM类型字典数据
        bom_type_data = [
            {'label': '设计BOM', 'value': 'DESIGN', 'sort': 1, 'color_type': 'blue', 'css_class': 'bom-design'},
            {'label': '制造BOM', 'value': 'MANUFACTURING', 'sort': 2, 'color_type': 'green', 'css_class': 'bom-manufacturing'},
            {'label': '工艺BOM', 'value': 'PROCESS', 'sort': 3, 'color_type': 'orange', 'css_class': 'bom-process'},
            {'label': '采购BOM', 'value': 'PURCHASE', 'sort': 4, 'color_type': 'purple', 'css_class': 'bom-purchase'},
            {'label': '销售BOM', 'value': 'SALES', 'sort': 5, 'color_type': 'cyan', 'css_class': 'bom-sales'},
            {'label': '服务BOM', 'value': 'SERVICE', 'sort': 6, 'color_type': 'magenta', 'css_class': 'bom-service'},
            {'label': '配置BOM', 'value': 'CONFIGURATION', 'sort': 7, 'color_type': 'volcano', 'css_class': 'bom-configuration'},
        ]
        
        for item in bom_type_data:
            dict_data, created = DictData.objects.get_or_create(
                dict_type=bom_type_dict,
                value=item['value'],
                defaults={
                    'label': item['label'],
                    'sort': item['sort'],
                    'color_type': item.get('color_type', 'default'),
                    'css_class': item.get('css_class', ''),
                    'status': True,
                    'remark': f'BOM类型: {item["label"]}'
                }
            )
            
            if created:
                self.stdout.write(self.style.SUCCESS(f'创建字典数据: {item["label"]}'))
        
        # BOM状态字典
        bom_status_dict, created = DictType.objects.get_or_create(
            value='bom_status',
            defaults={
                'name': 'BOM状态',
                'status': True,
                'remark': 'BOM状态字典，用于存储BOM的各种状态'
            }
        )
        
        if created:
            self.stdout.write(self.style.SUCCESS(f'创建字典类型: {bom_status_dict.name}'))
        
        # BOM状态字典数据
        bom_status_data = [
            {'label': '草稿', 'value': 'DRAFT', 'sort': 1, 'color_type': 'default', 'css_class': 'bom-draft'},
            {'label': '审核中', 'value': 'REVIEWING', 'sort': 2, 'color_type': 'processing', 'css_class': 'bom-reviewing'},
            {'label': '已批准', 'value': 'APPROVED', 'sort': 3, 'color_type': 'success', 'css_class': 'bom-approved'},
            {'label': '激活', 'value': 'ACTIVE', 'sort': 4, 'color_type': 'success', 'css_class': 'bom-active'},
            {'label': '停用', 'value': 'INACTIVE', 'sort': 5, 'color_type': 'warning', 'css_class': 'bom-inactive'},
            {'label': '已归档', 'value': 'ARCHIVED', 'sort': 6, 'color_type': 'default', 'css_class': 'bom-archived'},
        ]
        
        for item in bom_status_data:
            dict_data, created = DictData.objects.get_or_create(
                dict_type=bom_status_dict,
                value=item['value'],
                defaults={
                    'label': item['label'],
                    'sort': item['sort'],
                    'color_type': item.get('color_type', 'default'),
                    'css_class': item.get('css_class', ''),
                    'status': True,
                    'remark': f'BOM状态: {item["label"]}'
                }
            )
            
            if created:
                self.stdout.write(self.style.SUCCESS(f'创建字典数据: {item["label"]}'))
        
        # 生命周期状态字典
        lifecycle_status_dict, created = DictType.objects.get_or_create(
            value='lifecycle_status',
            defaults={
                'name': '生命周期状态',
                'status': True,
                'remark': '生命周期状态字典，用于存储产品的各种生命周期状态'
            }
        )
        
        if created:
            self.stdout.write(self.style.SUCCESS(f'创建字典类型: {lifecycle_status_dict.name}'))
        
        # 生命周期状态字典数据
        lifecycle_status_data = [
            {'label': '设计中', 'value': 'DESIGNING', 'sort': 1, 'color_type': 'processing', 'css_class': 'lifecycle-designing'},
            {'label': '审核中', 'value': 'REVIEWING', 'sort': 2, 'color_type': 'processing', 'css_class': 'lifecycle-reviewing'},
            {'label': '已批准', 'value': 'APPROVED', 'sort': 3, 'color_type': 'success', 'css_class': 'lifecycle-approved'},
            {'label': '生产中', 'value': 'PRODUCING', 'sort': 4, 'color_type': 'success', 'css_class': 'lifecycle-producing'},
            {'label': '已停用', 'value': 'DISCONTINUED', 'sort': 5, 'color_type': 'warning', 'css_class': 'lifecycle-discontinued'},
            {'label': '已停产', 'value': 'OBSOLETE', 'sort': 6, 'color_type': 'error', 'css_class': 'lifecycle-obsolete'},
        ]
        
        for item in lifecycle_status_data:
            dict_data, created = DictData.objects.get_or_create(
                dict_type=lifecycle_status_dict,
                value=item['value'],
                defaults={
                    'label': item['label'],
                    'sort': item['sort'],
                    'color_type': item.get('color_type', 'default'),
                    'css_class': item.get('css_class', ''),
                    'status': True,
                    'remark': f'生命周期状态: {item["label"]}'
                }
            )
            
            if created:
                self.stdout.write(self.style.SUCCESS(f'创建字典数据: {item["label"]}'))
        
        self.stdout.write(self.style.SUCCESS('BOM字典数据初始化完成!'))